#ifndef _VMPROTECTSDK_H_
#define _VMPROTECTSDK_H_

#if 1

#define VMProtectBegin 
#define VMProtectBeginVirtualization 
#define VMProtectBeginMutation 
#define VMProtectBeginUltra 
#define VMProtectEnd 

#else

#ifdef _WIN64
	extern "C" 
	{
		__declspec(dllimport) void __stdcall VMProtectBegin(void);
		__declspec(dllimport) void __stdcall VMProtectBeginVirtualization(void);
		__declspec(dllimport) void __stdcall VMProtectBeginMutation(void);
		__declspec(dllimport) void __stdcall VMProtectBeginUltra(void);
		__declspec(dllimport) void __stdcall VMProtectEnd(void);
	}
	#define VMProtectBegin VMProtectBegin();
	#define VMProtectBeginVirtualization VMProtectBeginVirtualization();
	#define VMProtectBeginMutation VMProtectBeginMutation();
	#define VMProtectBeginUltra VMProtectBeginUltra();
	#define VMProtectEnd VMProtectEnd();
#else
	#define VMProtectBegin \
		__asm _emit 0xEB \
		__asm _emit 0x10 \
		__asm _emit 0x56 \
		__asm _emit 0x4D \
		__asm _emit 0x50 \
		__asm _emit 0x72 \
		__asm _emit 0x6F \
		__asm _emit 0x74 \
		__asm _emit 0x65 \
		__asm _emit 0x63 \
		__asm _emit 0x74 \
		__asm _emit 0x20 \
		__asm _emit 0x62 \
		__asm _emit 0x65 \
		__asm _emit 0x67 \
		__asm _emit 0x69 \
		__asm _emit 0x6E \
		__asm _emit 0x00 \

	#define VMProtectBeginVirtualization \
		__asm _emit 0xEB \
		__asm _emit 0x10 \
		__asm _emit 0x56 \
		__asm _emit 0x4D \
		__asm _emit 0x50 \
		__asm _emit 0x72 \
		__asm _emit 0x6F \
		__asm _emit 0x74 \
		__asm _emit 0x65 \
		__asm _emit 0x63 \
		__asm _emit 0x74 \
		__asm _emit 0x20 \
		__asm _emit 0x62 \
		__asm _emit 0x65 \
		__asm _emit 0x67 \
		__asm _emit 0x69 \
		__asm _emit 0x6E \
		__asm _emit 0x01 \

	#define VMProtectBeginMutation \
		__asm _emit 0xEB \
		__asm _emit 0x10 \
		__asm _emit 0x56 \
		__asm _emit 0x4D \
		__asm _emit 0x50 \
		__asm _emit 0x72 \
		__asm _emit 0x6F \
		__asm _emit 0x74 \
		__asm _emit 0x65 \
		__asm _emit 0x63 \
		__asm _emit 0x74 \
		__asm _emit 0x20 \
		__asm _emit 0x62 \
		__asm _emit 0x65 \
		__asm _emit 0x67 \
		__asm _emit 0x69 \
		__asm _emit 0x6E \
		__asm _emit 0x02 \

	#define VMProtectBeginUltra \
		__asm _emit 0xEB \
		__asm _emit 0x10 \
		__asm _emit 0x56 \
		__asm _emit 0x4D \
		__asm _emit 0x50 \
		__asm _emit 0x72 \
		__asm _emit 0x6F \
		__asm _emit 0x74 \
		__asm _emit 0x65 \
		__asm _emit 0x63 \
		__asm _emit 0x74 \
		__asm _emit 0x20 \
		__asm _emit 0x62 \
		__asm _emit 0x65 \
		__asm _emit 0x67 \
		__asm _emit 0x69 \
		__asm _emit 0x6E \
		__asm _emit 0x03 \

	#define VMProtectEnd \
		__asm _emit 0xEB \
		__asm _emit 0x0E \
		__asm _emit 0x56 \
		__asm _emit 0x4D \
		__asm _emit 0x50 \
		__asm _emit 0x72 \
		__asm _emit 0x6F \
		__asm _emit 0x74 \
		__asm _emit 0x65 \
		__asm _emit 0x63 \
		__asm _emit 0x74 \
		__asm _emit 0x20 \
		__asm _emit 0x65 \
		__asm _emit 0x6E \
		__asm _emit 0x64 \
		__asm _emit 0x00 \

#endif

#endif /*_VMPROTECTSDK_H_*/

#endif